package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 定义本地变量
	var a int = 10

	// if 条件判断
	if a%2 == 0 {
		fmt.Println("a=", a)
	}

	// if else 条件判断
	if a%2 == 0 {
		fmt.Println("a is even\n")
	} else {
		fmt.Println("a is odd\n")
	}
	// if else if 条件判断
	//fmt.Print("if ")
	fmt.Println("if else if 条件判断")
	user_inputu_if()

	// switch 条件判断
	fmt.Println("switch 条件判断")
	user_inputs_switch()

	// for 循环
	fmt.Println("for 循环")
	user_inputs_for()
}

/* if else 条件判断 */
func user_inputu_if() {
	fmt.Print("Enter text: ")
	var input int
	fmt.Scan(&input) // 从标准输入读取一个整数

	if input < 0 || input > 100 {
		fmt.Println("input out of range")
	} else if input > 0 && input < 50 {
		fmt.Println("Fail")
	} else if input >= 50 && input < 60 {
		fmt.Println("D Grade")
	} else if input >= 60 && input < 70 {
		fmt.Println("C Grade")
	} else if input >= 70 && input < 80 {
		fmt.Println("B Grade")
	} else if input >= 80 && input < 90 {
		fmt.Println("A Grade")
	} else if input >= 90 && input < 100 {
		fmt.Println("A+ Grade")
	}
}

/* switch 条件判断 */
func user_inputs_switch() {
	fmt.Print("Enter text: ")
	var input int
	fmt.Scan(&input) // 从标准输入读取一个整数
	switch input {
	case 0:
		fmt.Println("input is 0")
	case 1:
		fmt.Println("input is 1")
	case 2:
		fmt.Println("input is 2")
	case 3:
		fmt.Println("input is 3")
	default:
		fmt.Println("input is not 0, 1, 2, 3")
	}
}

//switch failthrouth: 如果一个case匹配成功，那么它后面的case也会被执行，直到遇到break语句或者switch语句结束

/* for 循环 */
func user_inputs_for() {
	fmt.Print("Enter text: ")
	var input string
	fmt.Scanln(&input) // 从标准输入读取一个整数

	// 新增类型判断逻辑
	num, err := strconv.Atoi(input)
	if err == nil {
		// 数字类型保持原有循环逻辑
		for i := 0; i < num; i++ {
			fmt.Println(i)
		}
	} else {
		// 字符串类型逐个字符输出
		for _, char := range input {
			fmt.Println(string(char))
		}
	}
}
